The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the inventors hereof, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
This disclosure relates generally to low power data decoding, and more particularly to low power data decoders for use under defects, erasures, and puncturing, with a low density parity check (LDPC) encoder/decoder.
LDPC codes may be used for effectively correcting errors in information transmitted in a noisy communications channel. The information may be encoded (e.g., by an LDPC encoder) prior to transmission and then subsequently decoded (e.g., by an LDPC decoder) when received. LDPC codes are one of the best performing error correcting codes, along with Turbo codes, for use in correcting errors in information transmitted on almost all communication and data storage channels in use. These codes can be found in numerous IEEE standards that have been developed in the recent past.
LDPC codes may be defined by one of many different types of parity check matrices. The structure of an LDPC code's parity check matrix may be, for example, random, cyclic, or quasi-cyclic. An LDPC decoder (e.g., a flooding decoder) may decode LDPC codes using an iterative message passing algorithm (flooding decoding), such as a min-sum decoding algorithm. Such algorithms may decode a received codeword using an iterative process in which each iteration includes two update steps involving check nodes and variable nodes passing messages to one another. Another LDPC decoder (e.g., a layered decoder) may use a layered approach to decoding (layered decoding) to decode LDPC codes. Both approaches involve messages being updated and stored. As used herein, the term message refers to a numerical value, usually representing a log likelihood ratio (LLR) calculated based on the information (e.g., a vector) received from a communications channel by an LDPC decoder. LDPC codes and decoders that are used to decode LDPC codes may be used in numerous applications and devices. For example, data storage, satellite communications, wireless communications, wire-line communications, and power line communications are applications that may each require the use of LDPC codes and LDPC decoders. Devices such as digital camera flash memory storage, embedded MultiMediaCard (eMMC) Flash devices, Solid State Device (SSD) storage, satellites, mobile phones, and other mobile devices may each require the use of LDPC codes and LDPC decoders.
The code rate of a particular code used to encode information (e.g., an LDPC code) is a unit of measure corresponding to the number of information bits contained in a codeword. Specifically, the code rate is the ratio of the number of information bits to the total number of bits transmitted within the codeword (e.g., information bits plus parity bits). Flexible code rates may be provided by selectively reducing the length of a codeword, at the time it is transmitted, compared to the full length of the codeword, as initially encoded. Puncturing is one approach that can be used for reducing the codeword length. In this approach, certain bits of the codeword, as initially encoded, are simply not transmitted. Puncturing may be constrained to the parity bits of the codeword; however, information bits may also be punctured if desired. During the decoding of the punctured codeword, the missing (i.e., punctured) bits are reconstructed from the transmitted bits of the codeword using the error correction properties of the code being applied. In some instances, puncturing parity bits increases the code rate of the transmission at a cost of code performance (i.e., a higher error rate for a given signal-to-noise ratio (SNR)). In addition, performing error checks (e.g., parity syndrome checks) on information with punctured bits may waste power and decrease performance in applications that require error correction.
Due to interference signals and other types of noise and phenomena, encoded information may get corrupted during transmission. For example, transmitted information may contain defect bits, which refer to bits with a low reliability value that are identified as potential errors bits. As an example, a reliability value is an absolute value of the LLR messages associated with the bits/symbols of the corresponding vector. Additionally, transmitted information may contain erasures, which refer to the total loss or substantial corruption of a set of bits/symbols. Like puncturing, defects and erasures may waste power and substantially decrease the performance of a decoder.
Traditional decoders (e.g., LDPC decoders) that operate on data with known error patterns, detected errors (e.g., defects), erasures, and/or punctures may disadvantageously consume a large amount of power at a high rate. In addition, the performance of these traditional decoders may be degraded due to the additional time required to process defect, erased and/or punctured bits. Similarly, traditional decoders that operate on data with unknown error patterns or undetected errors may likewise require a high rate of power consumption. The performance of these traditional decoders may also be degraded because of the additional time required to process each data bit. Moreover, performance of traditional decoders may deteriorate during the life of a device. For instance, the signal-to-noise ratio (SNR) associated with data transmission in the device may initially be high, reflecting, for example, good quality channel conditions and data reliability. However, the SNR may degrade over the life of the device, as the device, for example, ages and/or is used more times.